package com.pan.server.config;

import com.pan.utils.ConfigUtils;

import java.util.concurrent.ThreadPoolExecutor;

public interface SocketPoolConfig {
    /**
     *
     #* corePoolSize (int)：核心线程数，即使线程处于空闲状态，如果当前线程数量小于核心线程数，线程池会一直保持这些线程。
     #* maximumPoolSize (int)：最大线程数，控制线程池可以同时运行的最大线程数量。
     #* keepAliveTime (long)：线程空闲时间，当线程数量超过核心线程数时，这是多余的空闲线程在终止前等待新任务的最长时间。
     #* unit (TimeUnit)：时间单位，用于解释 keepAliveTime 参数的时间单位。
     #* workQueue (BlockingQueue)：任务队列，用于存放等待执行的任务。
     #* threadFactory (ThreadFactory)：线程工厂，用于创建新的线程。允许自定义线程的创建，如设置线程优先级、线程名等。
     #* handler (RejectedExecutionHandler)：拒绝策略，当新任务无法被执行时（例如，当任务队列已满且当前运行的线程数量等于最大线程数量），将采用的策略。
     * @return
     */
    public default int getPoolCoreSize(){
        String keyName = "pool.size.core";
        return ConfigUtils.INSTANCE.getIntValue(keyName);
    }
    public default int getPoolMaxSize(){
        String keyName = "pool.size.max";
        return ConfigUtils.INSTANCE.getIntValue(keyName);
    }
    //AliveTime unit is seconds
    public default int getAliveTime(){
        String keyName = "pool.alive.time";
        return ConfigUtils.INSTANCE.getIntValue(keyName);
    }
    public default int getBlockQueueSize(){
        String keyName = "pool.block.queue.size";
        return ConfigUtils.INSTANCE.getIntValue(keyName);
    }


}

